"""
数据处理工具函数
"""
from typing import Union

def format_data_for_send(data: str, format_type: str) -> bytes:
    """
    格式化要发送的数据
    
    Args:
        data: 要发送的数据
        format_type: 数据格式 ('text' 或 'hex')
    
    Returns:
        格式化后的字节数据
    """
    # 处理空数据或None
    if data is None:
        raise ValueError("数据不能为None")
    
    # 确保data是字符串
    data = str(data)
    
    if format_type == "hex":
        # 移除所有空白字符（空格、换行、制表符等）
        hex_data = ''.join(data.split())
        if not hex_data:
            raise ValueError("十六进制数据不能为空")
        # 验证十六进制字符串长度是否为偶数
        if len(hex_data) % 2 != 0:
            raise ValueError(f"无效的十六进制数据长度: {len(hex_data)} 字节（必须是偶数）")
        try:
            return bytes.fromhex(hex_data)
        except ValueError as e:
            raise ValueError(f"无效的十六进制数据: {str(e)}")
    else:
        # 文本格式，使用UTF-8编码
        return data.encode('utf-8')

def format_received_data(data: bytes) -> dict:
    """
    格式化接收到的数据
    
    Args:
        data: 接收到的字节数据
    
    Returns:
        包含文本和十六进制格式的字典
    """
    return {
        "text": data.decode('utf-8', errors='ignore'),
        "hex": data.hex(' ', 1),  # 使用空格作为分隔符，每1个字节一组
        "length": len(data)
    }

def validate_hex_string(hex_str: str) -> bool:
    """
    验证十六进制字符串格式
    
    Args:
        hex_str: 十六进制字符串
    
    Returns:
        是否为有效的十六进制字符串
    """
    try:
        bytes.fromhex(hex_str.replace(" ", ""))
        return True
    except ValueError:
        return False